#首页蓝图模块
from flask import Blueprint
from flask import render_template,request,jsonify
from sqlalchemy import func #导入sqlalchemy工具包中的func对象用于计数
#导入房源模型
from models import House
#创建蓝图对象
index_page = Blueprint('index_page',__name__)
#创建首页路由
@index_page.route('/')
def index():
    #1.查询房源的总数
    house_total_num = House.query.count()
    #2.查询最新房源的前6条记录
    house_new_list = House.query.order_by(
                     House.publish_time.desc()).limit(6).all()
    print('最新房源：',house_new_list)
    #3.查询热点房源的前4条记录
    house_hot_list = House.query.order_by(
                     House.page_views.desc()).limit(4).all()
    return render_template('index_page.html',
                           num = house_total_num,
                           house_new_list = house_new_list,
                           house_hot_list = house_hot_list)
#创建搜索提示结果列表路由
@index_page.route('/search/keyword/',methods=['POST'])
def search_kw():
    '''
    编程思路：1.获取前端传递过来的关键词和选项（地区搜索和户型搜索）
             2.根据选项进行数据库查询，根据前端数据格式要求返回指定格式的json数据
    '''
    kw = request.form['kw']
    info = request.form['info']
    if info == '地区搜索':
        '''
        思路：1.根据关键词kw查询数据库，获取所有包含kw的小区和小区数量
             2.把查询的数据进行分组和降序排序
             3.判断是否查询到数据，有数据code=1就把数据重写组装成前端格式的json数据
             4.没有数据就返回code=0
             5.返回json数据
        json数据格式：
        {
            'code':1/0,
            'info':[{'t_name':值,'num':值},{},{}…………]
        }
        '''
        house_data = House.query.with_entities(
                     House.address,func.count()).\
                     filter(House.address.contains(kw))
        result = house_data.group_by('address').\
                 order_by(func.count().desc()).limit(9).all()
        if len(result):
            data = []
            for i  in result:
                data.append({'t_name':i[0],'num':i[1]})
            return jsonify({'code':1,'info':data})
        else:
            return jsonify({'code':0,'info':[]})
    if info == '户型搜索':
        house_data = House.query.with_entities(
                     House.rooms,func.count()).\
                     filter(House.rooms.contains(kw))
        result = house_data.group_by('rooms').\
                 order_by(func.count().desc()).limit(9).all()
        if len(result):
            data = []
            for i  in result:
                data.append({'t_name':i[0],'num':i[1]})
            return jsonify({'code':1,'info':data})
        else:
            return jsonify({'code':0,'info':[]})
